/**
 * 命令模式：将请求/操作封装为一个对象，允许用户使用不同的请求对客户端进行参数化，
 *          使请求者与接收者解耦，支持【对请求排队】、【记录请求日志】，以及【支持可撤销】的操作。
 * 
 * 示例需求：
 * 创建作为命令的接口 Order
 * 创建实际执行命令的 Stock 类。
 * 实体命令类 BuyStock 和 SellStock，实现了 Order 接口，将执行实际的命令处理。
 * 创建作为调用对象的类 Broker，它【接受订单】并能【下订单】。
 * Broker 对象使用命令模式，基于命令的类型确定哪个对象执行哪个命令。CommandPatternDemo 类使用 Broker 类来演示命令模式。
 * 
 * 角色：
 * 命令接口：Order
 * 具体命令：BuyStock、SellStock
 * 调用者：Broker
 * 接收者：Sock
 * 客户端SimpleMain
 */
public class SimpleMain {
    public static void main(String[] args) {
        Stock stock = new Stock();
        SellStock sellStock = new SellStock(stock);
        BuyStock buyStock = new BuyStock(stock);

        Broker broker = new Broker();
        broker.takeOrder(buyStock);
        broker.takeOrder(sellStock);
        broker.placeOrder();
    }
}
